package com.example;

/**
 * @Author loubobooo
 * @Description #887 鸡蛋掉落
 * @Date 2019/12/25
 */
public class SuperEggDrop {
    
    /**
     * @Author loubobooo
     * @Description 你将获得K个鸡蛋，并可以使用一栋从1到N共有 N层楼的建筑。
     * 每个蛋的功能都是一样的，如果一个蛋碎了，你就不能再把它掉下去。
     * 你知道存在楼层F ，满足0 <= F <= N 任何从高于 F的楼层落下的鸡蛋都会碎，从F楼层或比它低的楼层落下的鸡蛋都不会破。
     * 每次移动，你可以取一个鸡蛋（如果你有完整的鸡蛋）并把它从任一楼层X扔下（满足1 <= X <= N）。
     * 你的目标是确切地知道 F 的值是多少。
     * 无论 F 的初始值如何，你确定 F 的值的最小移动次数是多少？
     * @Date 2019/12/25 16:54
     * @Param 
     * @return 
     **/
    public int superEggDrop(int K, int N) {
        if(K < 1){
            return K;
        }
        if(N <= 1){
            return N;
        }
        int[][] dp = new int[K + 1][N + 1];
        int m = 0;
        while(dp[K][m] < N){
            m++;
            for (int i = 1; i <= K; i++) {
                dp[i][m] = dp[i][m - 1] + dp[i - 1][m - 1] + 1;
            }
        }
        return m;
    }

    public static void main(String[] args) {
        boolean[][] b = new boolean[10][10];
        for (int i = 0; i < 10; i++) {
            System.out.println(b[i][i]);
        }
    }
}
